GtkStyleContext: ensure class lookup return the correct insertion position if not...
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 2 Aug 2010 11:50:17 +0000 (13:50 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:37:22 +0000 (15:37 +0100)
gtk/gtkstylecontext.c

index c1ec55dd7e65496c7dd96ea5b460f720749a1c72..b58612df15bdad722f3c38a6579ed829f4a3163c 100644 (file)
@@ -646,7 +646,7 @@ style_class_find (GArray *array,
                   GQuark  class_quark,
                   guint  *position)
 {
-  guint min, max, mid;
+  gint min, max, mid;
   gboolean found = FALSE;
 
   if (position)
@@ -668,11 +668,14 @@ style_class_find (GArray *array,
       if (class_quark == item)
         found = TRUE;
       else if (class_quark > item)
-        min = mid + 1;
+        min = mid = mid + 1;
       else
-        max = mid - 1;
+        max = mid = mid - 1;
     }
-  while (!found && min < max);
+  while (!found && min <= max);
+
+  if (mid < 0)
+    mid = 0;
 
   if (position)
     *position = mid;
@@ -685,7 +688,7 @@ child_style_class_find (GArray *array,
                         GQuark  class_quark,
                         guint  *position)
 {
-  guint min, max, mid;
+  gint min, max, mid;
   gboolean found = FALSE;
 
   if (position)
@@ -707,11 +710,14 @@ child_style_class_find (GArray *array,
       if (child_class->class_quark == class_quark)
         found = TRUE;
       else if (child_class->class_quark > class_quark)
-        min = mid + 1;
+        min = mid = mid + 1;
       else
-        max = mid - 1;
+        max = mid = mid - 1;
     }
-  while (!found && min < max);
+  while (!found && min <= max);
+
+  if (mid < 0)
+    mid = 0;
 
   if (position)
     *position = mid;